home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / TextUtils.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  9KB  |  312 lines

  1. /*
  2.      File:        TextUtils.h
  3.  
  4.      Contains:    Text Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.0 through System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __TEXTUTILS__
  19. #define __TEXTUTILS__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __SCRIPT__
  25. #include <Script.h>
  26. #endif
  27. #ifndef __OSUTILS__
  28. #include <OSUtils.h>
  29. #endif
  30. #ifndef __TEXTOBJECTS__
  31. #include <TextObjects.h>
  32. #endif
  33. #ifndef __NUMBERFORMATTING__
  34. #include <NumberFormatting.h>
  35. #endif
  36. #ifndef __TIMEOBJECTS__
  37. #include <TimeObjects.h>
  38. #endif
  39. #ifndef __STRINGCOMPARE__
  40. #include <StringCompare.h>
  41. #endif
  42. /* FOR_SYSTEM8_PREEMPTIVE*/
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47.  
  48. #if PRAGMA_IMPORT_SUPPORTED
  49. #pragma import on
  50. #endif
  51.  
  52. #if PRAGMA_ALIGN_SUPPORTED
  53. #pragma options align=mac68k
  54. #endif
  55.  
  56. /*
  57.  
  58.     Here are the current System 7 routine names and the translations to the older forms.
  59.     Please use the newer forms in all new code and migrate the older names out of existing
  60.     code as maintainance permits.
  61.     
  62.     NEW NAME                    OLD NAMEs                    OBSOLETE FORM (no script code)
  63.  
  64.     FindScriptRun
  65.     FindWordBreaks                                            NFindWord, FindWord
  66.     GetIndString            
  67.     GetString
  68.     Munger
  69.     NewString                
  70.     SetString                
  71.     StyledLineBreak
  72.     TruncString
  73.     TruncText
  74.  
  75.     UpperString ($A054)            UprString, UprText
  76.     UppercaseText                SCUpperText (a only)        UpperText ($A456)
  77.     LowercaseText                                            LwrString, LowerText, LwrText ($A056)
  78.     StripDiacritics                                            StripText ($A256)
  79.     UppercaseStripDiacritics                                StripUpperText ($A656)
  80.  
  81.  
  82. */
  83. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  84. /* Type for truncWhere parameter in TruncString, TruncText */
  85. typedef short TruncCode;
  86.  
  87. enum {
  88.                                                                 /* Constants for truncWhere argument in TruncString and TruncText */
  89.     truncEnd                    = 0,                            /* Truncate at end */
  90.     truncMiddle                    = 0x4000,                        /* Truncate in middle */
  91.     smTruncEnd                    = 0,                            /* Truncate at end - obsolete */
  92.     smTruncMiddle                = 0x4000,                        /* Truncate in middle - obsolete */
  93.                                                                 /* Constants for TruncString and TruncText results */
  94.     notTruncated                = 0,                            /* No truncation was necessary */
  95.     truncated                    = 1,                            /* Truncation performed */
  96.     truncErr                    = -1,                            /* General error */
  97.     smNotTruncated                = 0,                            /* No truncation was necessary - obsolete */
  98.     smTruncated                    = 1,                            /* Truncation performed    - obsolete */
  99.     smTruncErr                    = -1                            /* General error - obsolete */
  100. };
  101.  
  102. typedef SInt8 StyledLineBreakCode;
  103.  
  104. enum {
  105.     smBreakWord                    = 0,
  106.     smBreakChar                    = 1,
  107.     smBreakOverflow                = 2
  108. };
  109.  
  110. struct ScriptRunStatus {
  111.     SInt8                             script;
  112.     SInt8                             runVariant;
  113. };
  114. typedef struct ScriptRunStatus ScriptRunStatus;
  115.  
  116. struct BreakTable {
  117.     char                             charTypes[256];
  118.     short                             tripleLength;
  119.     short                             triples[1];
  120. };
  121. typedef struct BreakTable BreakTable;
  122.  
  123. typedef BreakTable *BreakTablePtr;
  124. struct NBreakTable {
  125.     SInt8                             flags1;
  126.     SInt8                             flags2;
  127.     short                             version;
  128.     short                             classTableOff;
  129.     short                             auxCTableOff;
  130.     short                             backwdTableOff;
  131.     short                             forwdTableOff;
  132.     short                             doBackup;
  133.     short                             length;                        /* length of NBreakTable */
  134.     char                             charTypes[256];
  135.     short                             tables[1];
  136. };
  137. typedef struct NBreakTable NBreakTable;
  138.  
  139. typedef NBreakTable *NBreakTablePtr;
  140. /* The following functions are new names that work on 68k and PowerPC */
  141. extern pascal long Munger(Handle h, long offset, const void *ptr1, long len1, const void *ptr2, long len2)
  142.  ONEWORDINLINE(0xA9E0);
  143.  
  144. extern pascal StringHandle NewString(ConstStr255Param theString)
  145.  ONEWORDINLINE(0xA906);
  146.  
  147. extern pascal void SetString(StringHandle theString, ConstStr255Param strNew)
  148.  ONEWORDINLINE(0xA907);
  149.  
  150. extern pascal StringHandle GetString(short stringID)
  151.  ONEWORDINLINE(0xA9BA);
  152.  
  153. extern pascal void GetIndString(Str255 theString, short strListID, short index);
  154.  
  155. extern pascal StyledLineBreakCode StyledLineBreak(Ptr textPtr, long textLen, long textStart, long textEnd, long flags, Fixed *textWidth, long *textOffset)
  156.  FOURWORDINLINE(0x2F3C, 0x821C, 0xFFFE, 0xA8B5);
  157.  
  158. extern pascal short TruncString(short width, Str255 theString, TruncCode truncWhere)
  159.  FOURWORDINLINE(0x2F3C, 0x8208, 0xFFE0, 0xA8B5);
  160.  
  161. extern pascal short TruncText(short width, Ptr textPtr, short *length, TruncCode truncWhere)
  162.  FOURWORDINLINE(0x2F3C, 0x820C, 0xFFDE, 0xA8B5);
  163.  
  164. extern pascal void FindWordBreaks(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, BreakTablePtr breaks, OffsetTable offsets, ScriptCode script)
  165.  FOURWORDINLINE(0x2F3C, 0xC012, 0x001A, 0xA8B5);
  166.  
  167. extern pascal void LowercaseText(Ptr textPtr, short len, ScriptCode script)
  168.  SIXWORDINLINE(0x3F3C, 0x0000, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  169.  
  170. extern pascal void UppercaseText(Ptr textPtr, short len, ScriptCode script)
  171.  SIXWORDINLINE(0x3F3C, 0x0400, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  172.  
  173. extern pascal void StripDiacritics(Ptr textPtr, short len, ScriptCode script)
  174.  SIXWORDINLINE(0x3F3C, 0x0200, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  175.  
  176. extern pascal void UppercaseStripDiacritics(Ptr textPtr, short len, ScriptCode script)
  177.  SIXWORDINLINE(0x3F3C, 0x0600, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  178.  
  179. extern pascal ScriptRunStatus FindScriptRun(Ptr textPtr, long textLen, long *lenUsed)
  180.  FOURWORDINLINE(0x2F3C, 0x820C, 0x0026, 0xA8B5);
  181.  
  182. #endif
  183. /* FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE*/
  184. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  185. extern pascal void UpperString(Str255 theString, Boolean diacSensitive);
  186.  
  187. #if CGLUESUPPORTED
  188. extern void upperstring(char *theString, Boolean diacSensitive);
  189.  
  190. #endif
  191. /*
  192.  CGLUESUPPORTED
  193.  The following are macros which map old names to the names exported by InterfaceLib
  194. */
  195. #if OLDROUTINENAMES
  196. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  197. #define UprString(theString, diacSensitive)  \
  198.          UpperString(theString, diacSensitive)
  199. #if CGLUESUPPORTED
  200. #define uprstring(theString, diacSensitive) upperstring(theString, diacSensitive)
  201. #endif
  202. #endif
  203. /* FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED*/
  204. #endif
  205. /* OLDROUTINENAMES*/
  206. /* Old routine name but no new names are mapped to it:*/
  207.  
  208. #if GENERATING68K && !GENERATINGCFM
  209. #pragma parameter UprText(__A0, __D0)
  210. #endif
  211. extern pascal void UprText(Ptr textPtr, short len)
  212.  ONEWORDINLINE(0xA054);
  213.  
  214. #endif
  215. /* FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE*/
  216. /*
  217.     The following functions are old names, but are required for PowerPC builds
  218.     because InterfaceLib exports these names, instead of the new ones.
  219. */
  220. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  221. extern pascal void FindWord(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, BreakTablePtr breaks, OffsetTable offsets)
  222.  FOURWORDINLINE(0x2F3C, 0x8012, 0x001A, 0xA8B5);
  223.  
  224. extern pascal void NFindWord(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, NBreakTablePtr nbreaks, OffsetTable offsets)
  225.  FOURWORDINLINE(0x2F3C, 0x8012, 0xFFE2, 0xA8B5);
  226.  
  227.  
  228. #if GENERATING68K && !GENERATINGCFM
  229. #pragma parameter LwrText(__A0, __D0)
  230. #endif
  231. extern pascal void LwrText(Ptr textPtr, short len)
  232.  ONEWORDINLINE(0xA056);
  233.  
  234.  
  235. #if GENERATING68K && !GENERATINGCFM
  236. #pragma parameter LowerText(__A0, __D0)
  237. #endif
  238. extern pascal void LowerText(Ptr textPtr, short len)
  239.  ONEWORDINLINE(0xA056);
  240.  
  241.  
  242. #if GENERATING68K && !GENERATINGCFM
  243. #pragma parameter StripText(__A0, __D0)
  244. #endif
  245. extern pascal void StripText(Ptr textPtr, short len)
  246.  ONEWORDINLINE(0xA256);
  247.  
  248.  
  249. #if GENERATING68K && !GENERATINGCFM
  250. #pragma parameter UpperText(__A0, __D0)
  251. #endif
  252. extern pascal void UpperText(Ptr textPtr, short len)
  253.  ONEWORDINLINE(0xA456);
  254.  
  255.  
  256. #if GENERATING68K && !GENERATINGCFM
  257. #pragma parameter StripUpperText(__A0, __D0)
  258. #endif
  259. extern pascal void StripUpperText(Ptr textPtr, short len)
  260.  ONEWORDINLINE(0xA656);
  261.  
  262. #endif
  263. /* FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE*/
  264. #if CGLUESUPPORTED
  265. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  266. extern void setstring(StringHandle theString, const char *strNew);
  267.  
  268. extern StringHandle newstring(const char *theString);
  269.  
  270. extern void getindstring(char *theString, short strListID, short index);
  271.  
  272. #endif
  273. #endif
  274. /* CGLUESUPPORTED*/
  275. #if !OLDROUTINELOCATIONS
  276. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  277. extern StringPtr c2pstr(char *aStr);
  278.  
  279. extern pascal StringPtr C2PStr(Ptr cString);
  280.  
  281. extern char *p2cstr(StringPtr aStr);
  282.  
  283. extern pascal Ptr P2CStr(StringPtr pString);
  284.  
  285. extern void c2pstrcpy(Str255 dst, const char *src);
  286.  
  287. extern void p2cstrcpy(char *dst, ConstStr255Param src);
  288.  
  289. extern void CopyPascalStringToC(ConstStr255Param src, char *dst);
  290.  
  291. extern void CopyCStringToPascal(const char *src, Str255 dst);
  292.  
  293. #endif
  294. /* FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE*/
  295. #endif
  296. /* !OLDROUTINELOCATIONS*/
  297.  
  298. #if PRAGMA_ALIGN_SUPPORTED
  299. #pragma options align=reset
  300. #endif
  301.  
  302. #if PRAGMA_IMPORT_SUPPORTED
  303. #pragma import off
  304. #endif
  305.  
  306. #ifdef __cplusplus
  307. }
  308. #endif
  309.  
  310. #endif /* __TEXTUTILS__ */
  311.  
  312.